/*
  学习目标：掌握-设置嵌套路由
 
*/
import React from 'react';
import { BrowserRouter as Router, Route, Link, NavLink, Switch, Redirect } from 'react-router-dom';
import './index.css';

export default class App extends React.Component {
  render() {
    return (
      <Router>
        <div className="root_child">
          <h1>app组件</h1>
          <NavLink activeClassName="xxx" to="/home" exact>
            首页
          </NavLink>
          <br />
          <Link to="/my">我的音乐</Link>
          <br />
          <Link to="/friend">朋友</Link>
          <br />
          <Switch>
            <Redirect from="/" to="/home" exact />

            <Route path="/home" component={Home} exact />
            <Route path="/my" component={MyMusic} />
            <Route path="/friend" component={Friend} />

            <Route component={NotFound} />
          </Switch>
        </div>
      </Router>
    );
  }
}

function Friend() {
  return (
    <div>
      <div>我是朋友组件</div>

      <Link
        // 💥 to的值, 从1级路径开始写, 两级路径要写完整
        to="/friend/friend1"
      >
        朋友1
      </Link>
      <br />
      <Link to="/friend/friend2">朋友2</Link>
      <br />
      <Link to="/friend/friend3">朋3</Link>
      {/*  1. 在父组件内, 设置Switch + Route匹配规则和挂载点 */}
      <Switch>
        <Route
          // 💥 注意1: 父子级路径, 可以同名, 互不影响
          // 💥 注意2: 二级路由, 不需要再次使用Router实例化路由
          // 2. path的值, 从1级路径开始写, 两级路径要写完整
          path="/friend/friend1"
          component={Friend1}
        />

        <Route path="/friend/friend2" component={Friend2} />
        <Route path="/friend/friend3" component={Friend3} />
      </Switch>
    </div>
  );
}

function Friend1() {
  return <h1>我是朋友1组件</h1>;
}
function Friend2() {
  return <h2>我是朋友2组件</h2>;
}
function Friend3() {
  return <h3>我是朋友3组件</h3>;
}

function NotFound() {
  return <h1>404页面</h1>;
}

function Home() {
  return <h1>我是首页组件</h1>;
}

function MyMusic() {
  return <h1>我是我的音乐件</h1>;
}
